/**
 * 验证器，如果一个条件验证不通过立即返回错误
 */
let validType = {
	'r': {  //必填验证器
		regxs: [/.+/],
		msg: '此字段不能为空'
	},
	'minLen[3]':{

	 },
	'date': {
        regxs: [/^\d{4}(\-|\/|\.)(0)?[1-12]{1}\1(0)?[1-31]{1}$/],
        msg: '此字段不是有效的日期'
    },
	'email': {
        regxs: [/^\S+@\S+$/],
        msg: '此字段不是有效Email地址'
    }
}

export default {
	/**
	 * 验证方法
	 * @param  {[string]} type      [验证类型,以多个如果验证多种以逗号隔开]
	 * @param  {[React Component]} component [被验证容器]
	 * @return {[object]}           [true 或 false]
	 */
	doValid(type, value){
		if(type){
			let types;
			if(type instanceof Array){
				types = type;
			}else{
				types = type.split(',');
			}
			value = value == undefined ? '': value;
			for(let i = 0, len = types.length; i < len; i++){
				let vator = validType[types[i]]
					, flag = true
					, msg = vator.msg
					, regxs = vator.regxs
					, handler = vator.handler;
				if(regxs){
					for(let j = 0, jlen = regxs.length; j < jlen; j++){
						if(!regxs[j].test(value)){
							flag = false;
							break;
						}
					}
				}
				if(flag && handler){
					flag = handler.bind(vator)(types[i], value);
				}
				if(flag == false){
					return msg;
				}
			}
		}
		return true;
	}
}